import { Loading } from 'element-ui'

// 页面加载效果
// 参考: https://blog.csdn.net/sunhuaqiang1/article/details/95474410

// 参考: 全局loading效果
// https://blog.csdn.net/web_youth/article/details/80052814

let loading // 定义loading变量

function startLoading(text = '拼命加载中...') {
  // 使用Element loading-start 方法
  loading = Loading.service({
    lock: true,
    text: text,
    spinner: 'el-icon-loading',
    background: 'rgba(0, 0, 0, 0.8)'
  })
}

function endLoading() {
  // 使用Element loading-close 方法
  loading.close()
}
// 那么 ShowFullScreenLoading() HideFullScreenLoading() 要干的事儿就是将同一时刻的请求合并。
// 声明一个变量 needLoadingRequestCount，每次调用ShowFullScreenLoading方法 needLoadingRequestCount + 1。
// 调用HideFullScreenLoading()方法，needLoadingRequestCount - 1。needLoadingRequestCount为 0 时，结束 loading。
let needLoadingRequestCount = 0

function HideFullScreenLoading() {
  if (needLoadingRequestCount <= 0) return
  needLoadingRequestCount--
  if (needLoadingRequestCount === 0) {
    endLoading()
  }
}

function ShowFullScreenLoading(text) {
  HideFullScreenLoading()
  if (needLoadingRequestCount === 0) {
    startLoading(text)
  }
  needLoadingRequestCount++
}

// http request 拦截器
// axios.interceptors.request.use(
//   config => {
//     var token = ''
//     if (typeof Cookies.get('user') === 'undefined') {
//       // 此时为空
//     } else {
//       token = JSON.parse(Cookies.get('user')).token
//     } // 注意使用的时候需要引入cookie方法，推荐js-cookie
//     config.data = JSON.stringify(config.data)
//     config.headers = {
//       'Content-Type': 'application/json'
//     }
//     if (token != '') {
//       config.headers.token = token
//     }
//     ShowFullScreenLoading()
//     return config
//   },
//   error => {
//     return Promise.reject(err)
//   }
// )

// http response 拦截器
// axios.interceptors.response.use(
//   response => {
//     // 当返回信息为未登录或者登录失效的时候重定向为登录页面
//     if (
//       response.data.code == 'W_100004' ||
//       response.data.message == '用户未登录或登录超时，请登录！'
//     ) {
//       router.push({
//         path: '/',
//         querry: { redirect: router.currentRoute.fullPath } //从哪个页面跳转
//       })
//     }
//     HideFullScreenLoading()
//     return response
//   },
//   error => {
//     return Promise.reject(error)
//   }
// )

export default {
  Show: ShowFullScreenLoading,
  Close: HideFullScreenLoading
}
